package com.xqiapp.xframe.plugin.codes.support;

import java.net.URL;

/**
 * class帮助类
 * 
 * @author mike <br>
 *         2015年10月9日
 */
public class ClassSupport {

	/**
	 * 获取类加载器
	 * 
	 * @return ClassLoader
	 */
	public static ClassLoader getClassLoader() {
		return Thread.currentThread().getContextClassLoader();
	}

	/**
	 * 获取当前类路径
	 * 
	 * @return String
	 */
	public static String getClassPath() {
		URL url = getClassLoader().getResource("");
		return (url != null) ? url.getPath() : null;
	}

	/**
	 * 加载类，并指定是否初始化
	 * 
	 * @param className
	 * @param isInitialized
	 * @return Class<?>
	 */
	public static Class<?> loadClass(String className, boolean isInitialized) {
		try {
			return Class.forName(className, isInitialized, getClassLoader());
		} catch (ClassNotFoundException e) {
			throw new RuntimeException("获取类出错。", e);
		}
	}

	/**
	 * 是否int || Integer 类型
	 * 
	 * @param cls
	 * @return
	 */
	public static boolean isInt(Class<?> cls) {
		return cls.equals(int.class) || cls.equals(Integer.class);
	}

	/**
	 * 是否是 long || Long 类型
	 * 
	 * @param cls
	 * @return
	 */
	public static boolean isLong(Class<?> cls) {
		return cls.equals(long.class) || cls.equals(Long.class);
	}

	/**
	 * 是否是 double || Double 类型
	 * 
	 * @param cls
	 * @return
	 */
	public static boolean isDouble(Class<?> cls) {
		return cls.equals(double.class) || cls.equals(Double.class);
	}

	/**
	 * 是否是 boolean || Boolean 类型
	 * 
	 * @param cls
	 * @return
	 */
	public static boolean isBoolean(Class<?> cls) {
		return cls.equals(boolean.class) || cls.equals(Boolean.class);
	}

	/**
	 * 是否是 String 类型
	 * 
	 * @param cls
	 * @return
	 */
	public static boolean isString(Class<?> cls) {
		return cls.equals(String.class);
	}

}
